package com.example.pre.business;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.multipart.MultipartFile;

import com.example.pre.enums.AskOffTypeEnum;
import com.example.pre.model.AskOff;

/**
 * 请假申请业务层接口
 * 
 * @author Administrator
 *
 */
public interface AskOffBusiness {

	/**
	 * 创建请假申请
	 * 
	 * @param startTime 请假开始时间
	 * @param endTime   请假结束时间
	 * @param duration  请假时长
	 * @param type      请假类型
	 * @param content   请假事由
	 * @param fileUUID  附件说明
	 * @return
	 * @throws Exception
	 */
	public AskOff createAskOff(int userId, Long startTime, Long endTime, int duration, AskOffTypeEnum type,
			String content, MultipartFile file) throws Exception;

	/**
	 * 下载请假附件
	 * 
	 * @param askOffId
	 * @return
	 * @throws Exception
	 */
	public void downAskOff(HttpServletRequest request, HttpServletResponse response, int askOffId) throws Exception;

	/**
	 * 修改请假申请
	 * 
	 * @param askOffId  请假申请id
	 * @param startTime 请假开始时间
	 * @param endTime   请假结束时间
	 * @param duration  请假时长
	 * @param type      请假类型
	 * @param content   请假事由
	 * @param fileUUID  附件说明
	 * @return
	 * @throws Exception
	 */
	public void updateAskOff(int userId, int askOffId, Long startTime, Long endTime, Integer duration,
			AskOffTypeEnum type, String content, MultipartFile file) throws Exception;

	/**
	 * 查看请假申请
	 * 
	 * @param askOffId 请假申请id
	 * @return
	 * @throws Exception
	 */
	public AskOff checkAskOff(int askOffId) throws Exception;

	/**
	 * 提交申请
	 * 
	 * @param askOffId 请假申请id
	 * @return
	 * @throws Exception
	 */
	public Map<String, Object> flowAskOff(Integer askOffId) throws Exception;

}
